
package com.platform.modules.mall.service;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.platform.modules.mall.entity.MallCardSnEntity;
import com.platform.modules.mall.entity.MallOrderEntity;
import com.platform.modules.mall.entity.MallUserEntity;

import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

/**
 * 卡卷编码Service接口
 *
 * @author tech
 * @date 2020-08-04 22:52:36
 */
public interface MallCardSnService extends IService<MallCardSnEntity> {

    /**
     * 查询所有列表
     *
     * @param params 查询参数
     * @return List
     */
    List<MallCardSnEntity> queryAll(Map<String, Object> params);

    List<MallCardSnEntity> queryDownLoad(Map<String, Object> params);

    /**
     * 分页查询卡卷编码
     *
     * @param params 查询参数
     * @return Page
     */
    Page queryPage(Map<String, Object> params);

    /**
     * 新增卡卷编码
     *
     * @param mallCardSn 卡卷编码
     * @return 新增结果
     */
    boolean add(MallCardSnEntity mallCardSn);

    /**
     * 根据主键更新卡卷编码
     *
     * @param mallCardSn 卡卷编码
     * @return 更新结果
     */
    boolean update(MallCardSnEntity mallCardSn);

    /**
     * 根据主键删除卡卷编码
     *
     * @param cardId cardId
     * @return 删除结果
     */
    boolean delete(String cardId);

    /**
     * 根据主键批量删除
     *
     * @param cardIds cardIds
     * @return 删除结果
     */
    boolean deleteBatch(String[] cardIds);

    /**
     * 支付成功发放卡卷
     *
     * @return 删除结果
     */
    boolean sendCard(MallOrderEntity orderInfo);


    /**
     * 支付成功发放卡卷
     *
     * @return 发送成功
     */
    boolean sendCard2(MallOrderEntity orderInfo);



    /**
     * 抽奖发送卡券
     *
     * @param cardId cardId
     * @return 删除结果
     */
    boolean sendCard(String cardId, Integer number, MallUserEntity userEntity);

    /**
     * 根据传的数量获取对应数量的卡券sn
     *
     * @return 删除结果
     */
    List<MallCardSnEntity> queryCardSnByNumbers(JSONObject queryParams);


    /**
     * 获取卡券密钥
     * @param cardId
     * @param userSize
     * @return
     */
    List<MallCardSnEntity> getCardSn(String cardId, int userSize);

    void cardSnExport(HttpServletResponse response,Map<String, Object> params);
}
